]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
st/focus-manager: Mark as final type
authorBilal Elmoussaoui <belmouss@redhat.com>
Wed, 16 Oct 2024 11:57:48 +0000 (13:57 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 17 Oct 2024 16:54:05 +0000 (18:54 +0200)
Nothing can derive this type. Also squeeze in a macro usage for cleanup

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3508>
(cherry picked from commit 31119228a8266153dba0ef4d97b9c90c4f9c3fae)

src/st/st-focus-manager.c
src/st/st-focus-manager.h

index b173fbf451814dd23b5a23db11d55ffdd16c35fe..948a9dcceef948b77bf6d2c7bdc8cc5a9d888057 100644 (file)
 
 #include "st-focus-manager.h"
 
-struct _StFocusManagerPrivate
+typedef struct _StFocusManager
 {
+  GObject parent;
+
   ClutterStage *stage;
   GHashTable *groups;
-};
+} StFocusManager;
 
-G_DEFINE_TYPE_WITH_PRIVATE (StFocusManager, st_focus_manager, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE (StFocusManager, st_focus_manager, G_TYPE_OBJECT)
 
 static void
 st_focus_manager_dispose (GObject *object)
 {
   StFocusManager *manager = ST_FOCUS_MANAGER (object);
 
-  if (manager->priv->groups)
-    {
-      g_hash_table_destroy (manager->priv->groups);
-      manager->priv->groups = NULL;
-    }
+  g_clear_pointer (&manager->groups, g_hash_table_destroy);
 
   G_OBJECT_CLASS (st_focus_manager_parent_class)->dispose (object);
 }
@@ -64,8 +62,7 @@ st_focus_manager_class_init (StFocusManagerClass *klass)
 static void
 st_focus_manager_init (StFocusManager *manager)
 {
-  manager->priv = st_focus_manager_get_instance_private (manager);
-  manager->priv->groups = g_hash_table_new (NULL, NULL);
+  manager->groups = g_hash_table_new (NULL, NULL);
 }
 
 static gboolean
@@ -117,7 +114,7 @@ st_focus_manager_stage_event (ClutterActor *stage,
 
   for (group = focused; group != stage; group = clutter_actor_get_parent (group))
     {
-      if (g_hash_table_lookup (manager->priv->groups, group))
+      if (g_hash_table_lookup (manager->groups, group))
         {
           return st_widget_navigate_focus (ST_WIDGET (group), focused,
                                            direction, wrap_around);
@@ -143,7 +140,7 @@ st_focus_manager_get_for_stage (ClutterStage *stage)
   if (!manager)
     {
       manager = g_object_new (ST_TYPE_FOCUS_MANAGER, NULL);
-      manager->priv->stage = stage;
+      manager->stage = stage;
       g_object_set_data_full (G_OBJECT (stage), "st-focus-manager",
                              manager, g_object_unref);
 
@@ -176,13 +173,13 @@ void
 st_focus_manager_add_group (StFocusManager *manager,
                             StWidget       *root)
 {
-  gpointer count_p = g_hash_table_lookup (manager->priv->groups, root);
+  gpointer count_p = g_hash_table_lookup (manager->groups, root);
   int count = count_p ? GPOINTER_TO_INT (count_p) : 0;
 
   g_signal_connect (root, "destroy",
                     G_CALLBACK (remove_destroyed_group),
                     manager);
-  g_hash_table_insert (manager->priv->groups, root, GINT_TO_POINTER (++count));
+  g_hash_table_insert (manager->groups, root, GINT_TO_POINTER (++count));
 }
 
 /**
@@ -196,15 +193,15 @@ void
 st_focus_manager_remove_group (StFocusManager *manager,
                                StWidget       *root)
 {
-  gpointer count_p = g_hash_table_lookup (manager->priv->groups, root);
+  gpointer count_p = g_hash_table_lookup (manager->groups, root);
   int count = count_p ? GPOINTER_TO_INT (count_p) : 0;
 
   if (count == 0)
     return;
   if (count == 1)
-    g_hash_table_remove (manager->priv->groups, root);
+    g_hash_table_remove (manager->groups, root);
   else
-    g_hash_table_insert (manager->priv->groups, root, GINT_TO_POINTER(--count));
+    g_hash_table_insert (manager->groups, root, GINT_TO_POINTER(--count));
 }
 
 /**
@@ -224,7 +221,7 @@ st_focus_manager_get_group (StFocusManager *manager,
 {
   ClutterActor *actor = CLUTTER_ACTOR (widget);
 
-  while (actor && !g_hash_table_lookup (manager->priv->groups, actor))
+  while (actor && !g_hash_table_lookup (manager->groups, actor))
     actor = clutter_actor_get_parent (actor);
 
   return ST_WIDGET (actor);
@@ -249,6 +246,6 @@ st_focus_manager_navigate_from_event (StFocusManager *manager,
   if (clutter_event_type (event) != CLUTTER_KEY_PRESS)
     return FALSE;
 
-  return st_focus_manager_stage_event (CLUTTER_ACTOR (manager->priv->stage),
+  return st_focus_manager_stage_event (CLUTTER_ACTOR (manager->stage),
                                        event, manager);
 }
index 36ec8e0a75c06f5d1833ed151bb2f5fb03439e0c..c85e6015e3bfce889af288ec172f101f83b3837f 100644 (file)
@@ -33,20 +33,6 @@ G_BEGIN_DECLS
 G_DECLARE_FINAL_TYPE (StFocusManager, st_focus_manager, ST, FOCUS_MANAGER, GObject)
 
 typedef struct _StFocusManager                 StFocusManager;
-typedef struct _StFocusManagerPrivate          StFocusManagerPrivate;
-
-/**
- * StFocusManager:
- *
- * The #StFocusManager struct contains only private data
- */
-struct _StFocusManager
-{
-  /*< private >*/
-  GObject parent_instance;
-
-  StFocusManagerPrivate *priv;
-};
 
 StFocusManager *st_focus_manager_get_for_stage (ClutterStage *stage);